for _ in range(int(input())):
n , c = map(int,input().split())
s=list(map(int,input().split()))
t=[]
i=0
while len(s)!=0:
t.append(s.count(s[i]))
s=list(filter((s[i]).__ne__,s))
count=0
for j in range(len(t)):
if c<t[j]:
count+=c
else:
count+=t[j]
print(count)
#include <bits/stdc++.h>
using namespace std;
#define endl '\n'
const int mod = 1e9 + 7;
int main() {
ios_base::sync_with_stdio(false);
cin.tie(NULL); cout.tie(NULL);
int tt;
cin >> tt;
while (tt--) {
int n, c;
cin >> n >> c;
vector<int> arr(101);
for (int i = 0; i < n; ++i) {
int v; cin >> v;
arr[v]++;
}
int result = 0;
for (auto v : arr) result += min(v, c);
cout << result << endl;
}
return 0;
}
/* Try this if you are stuck:
1) Maybe binary search on answer?
2) Try solving it in reverse
3) Think of a simple problem
4) Think of elements which are special
(like minimum, maximum, deepest node in tree, root)
5) Is it graph problem?
*/
/* DONT FORGET:
EDGE CASES!!!!!
N = 1,2...
LONG LONG INSTEAD OF INT??
*/
379B - New Year Present | 1498A - GCD Sum |
1277C - As Simple as One and Two | 1301A - Three Strings |
460A - Vasya and Socks | 1624C - Division by Two and Permutation |
1288A - Deadline | 1617A - Forbidden Subsequence |
914A - Perfect Squares | 873D - Merge Sort |
1251A - Broken Keyboard | 463B - Caisa and Pylons |
584A - Olesya and Rodion | 799A - Carrot Cakes |
1569B - Chess Tournament | 1047B - Cover Points |
1381B - Unmerge | 1256A - Payment Without Change |
908B - New Year and Buggy Bot | 979A - Pizza Pizza Pizza |
731A - Night at the Museum | 742A - Arpa’s hard exam and Mehrdad’s naive cheat |
1492A - Three swimmers | 1360E - Polygon |
1517D - Explorer Space | 1230B - Ania and Minimizing |
1201A - Important Exam | 676A - Nicholas and Permutation |
431A - Black Square | 474B - Worms |